import os                                       # 导入os模块
import json                                     # 导入json模块
import sys

# 将项目根目录添加到Python路径
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

# 使用绝对导入
from wechat.SUD_GetMessage import process_wechat_messages  # 导入获取微信消息的函数
from core.logger import get_logger  # 导入日志模块

# 创建模块特定的日志记录器
logger = get_logger("SUD_UserProfile_Update")

def check_and_create_ai_record_dir(file_path="data/AI_record"):
    """
    检查是否存在指定的AI_record文件夹，如果不存在则创建
    
    Args:
        file_path (str): 检查和创建的文件夹路径，默认为"AI_record"
    
    Returns:
        str: 文件夹路径
    """
    # 检查文件夹是否存在
    if not os.path.exists(file_path):
        # 如果不存在，则创建文件夹
        os.makedirs(file_path)
        logger.info(f"已创建 {file_path} 文件夹")
    else:
        logger.debug(f"{file_path} 文件夹已存在，直接使用")
    
    return file_path

def create_user_directory(friend_name, base_dir="data/AI_record"):
    """
    在AI_record目录下创建用户特定的文件夹
    
    Args:
        friend_name (str): 用户名
        base_dir (str): 基础目录，默认为"AI_record"
    
    Returns:
        str: 用户文件夹的完整路径
    """
    # 确保基础目录存在
    logger.debug(f"确保基础目录 {base_dir} 存在")
    check_and_create_ai_record_dir(base_dir)
    
    # 创建用户特定的目录路径
    user_dir = os.path.join(base_dir, f"user_{friend_name}")
    
    # 检查并创建用户目录
    if not os.path.exists(user_dir):
        os.makedirs(user_dir)
        logger.info(f"已为用户 {friend_name} 创建目录: {user_dir}")
    else:
        logger.debug(f"用户 {friend_name} 的目录已存在: {user_dir}")
    
    return user_dir

def save_messages_to_file(load_iterations=5, base_dir="data/AI_record"):
    """
    获取微信消息并保存到用户目录下的文件中
    
    Args:
        load_iterations (int): 加载微信消息的迭代次数，默认为3
        base_dir (str): 基础目录，默认为"AI_record"
    
    Returns:
        tuple: (friend_name, file_path)
            - friend_name: 用户名
            - file_path: 保存的文件路径
    """
    # 调用process_wechat_messages函数获取friend_name和messages
    logger.info(f"开始获取微信消息，加载迭代次数: {load_iterations}")
    friend_name, messages = process_wechat_messages(load_iterations)
    
    # 为用户创建目录
    logger.info(f"为用户 {friend_name} 创建目录")
    user_dir = create_user_directory(friend_name, base_dir)
    
    # 创建固定文件名，格式为 friend_name_messages.json
    file_name = f"{friend_name}_messages.json"
    file_path = os.path.join(user_dir, file_name)
    
    # 将消息列表保存为json格式（覆盖式保存）
    try:
        with open(file_path, 'w', encoding='utf-8') as f:
            json.dump(messages, f, ensure_ascii=False, indent=2)
        logger.info(f"成功将 {len(messages)} 条消息保存到文件: {file_path}")
    except Exception as e:
        logger.error(f"保存消息到文件 {file_path} 时出错: {str(e)}")
    
    return friend_name, file_path


# 调用示例
if __name__ == "__main__":
    logger.info("开始执行SUD_UserProfile_Update主程序")
    
    # 直接调用整合后的函数，完成消息获取和保存
    friend_name, saved_file_path = save_messages_to_file()
    
    logger.info(f"处理完成，用户 {friend_name} 的消息已保存到 {saved_file_path}")
    logger.info("SUD_UserProfile_Update主程序执行完毕")



    

